import time

from selenium.webdriver.common.by import By
from page.mialListManagerPage import OrgPageElement
from base.base_page import BasePage
import  allure

class OrgPage(BasePage):

    def create_org(self, org_name, parent_org):
        """
        创建部门方法封装
        :param org_name:
        :param parent_org:
        :return:
        """
        # 点击进入通讯录界面
        with allure.step("点击进入通讯录界面"):
            # 通讯录按钮,进入通讯录界面
            self.my_click(OrgPageElement.mail_list_button)
        # 点击组织架构
        with allure.step("点击组织架构"):
            self.my_click(OrgPageElement.org_stru_button)
        # 点击+号，+号按钮
        with allure.step("点击+号"):
            self.my_click(OrgPageElement.add_button)
        # 点击-添加部门，添加部门按钮
        with allure.step("点击-添加部门"):
            # 点击-添加部门，添加部门按钮
            self.my_click(OrgPageElement.add_org_button)
        # 输入部门名称，部门输入框
        with allure.step("输入部门名称：{}".format(org_name)):
            self.my_send_keys(OrgPageElement.input_org_name, value= org_name)

        # 选择所属部门，如果parent_org有值，需要执行if内的代码，完成所属部门的选择，空字符代表false，不会执行if下面的语句
            if parent_org:
                # 点击展开下拉框
                    self.my_click(OrgPageElement.parent_org_box)
                    if type(parent_org) == list: #如果传了多级副部门，按层级选择
                        #展开
                        choose_parent_org1 = (OrgPageElement.open_parent_org[0],
                                          OrgPageElement.open_parent_org[-1].format(parent_org[0]))
                        with allure.step("展开部门：{}".format(parent_org[0])):
                            #选择
                            self.my_click(choose_parent_org1)
                        choose_parent_org2 = (OrgPageElement.choose_parent_org[0],
                                          OrgPageElement.choose_parent_org[-1].format(parent_org[1]))
                        with allure.step("选择所属部门：{}".format(parent_org[1])):
                            self.my_click(choose_parent_org2)
                    # level = self.my_get_element_atr(parent_org_ele, "aria-level")
                    else: #只有一层部门，直接选择 # 选择所属部门，下拉框选择按钮
                        choose_parent_org= (OrgPageElement.choose_parent_org[0],
                                                OrgPageElement.choose_parent_org[-1].format(parent_org))
                        self.my_click(choose_parent_org)
            # if level in ["1", "2"]:
            #     # 点击所属部门复选框，所属部门下拉框
            #     self.my_click(OrgPageElement.parent_org_box)
            #     self.my_click(choose_parent_org)
            # else:
            #     self.my_find_elements(OrgPageElement.open_parent_org)
            #     for ele  in self.elements:
            #         ele.click()
            #         try:
            #             # 点击所属部门复选框，所属部门下拉框
            #             self.my_click(OrgPageElement.parent_org_box)
            #             self.my_click(choose_parent_org)
            #             break
            #         except:
            #             pass
        # time.sleep(2)
        # 点击确定，确定按钮
        with allure.step("点击确定"):
            self.my_click(OrgPageElement.define_button)

    def update_org(self, org_name, new_org_name):
        """
        修改部门用例封装
        :param org_name:
        :param new_org_name:
        :return:
        """
        # 点击进入通讯录
        with allure.step("点击进入通讯录"):
            self.my_click(OrgPageElement.mail_list_button)
        # 点击部门设置按钮
        # self.my_click(OrgPageElement.org_set_button)
        # 点击组织架构
        with allure.step("点击组织架构"):
            self.my_click(OrgPageElement.org_stru_button)
        # # 点击部门设置三个点按钮
        with allure.step("点击确定"):
            org_list = (OrgPageElement.org_list[0],
                        OrgPageElement.org_list[-1].format(org_name))
        with allure.step("鼠标移动至该元素"):
            self.my_move_to_element(org_list) #鼠标移动至该元素
            org_set_button = (OrgPageElement.org_set_button[0],
                              OrgPageElement.org_set_button[-1].format(org_name))
        with allure.step("点击确定"):
            self.my_click(org_set_button)
        # 点击修改名称按钮
        with allure.step("点击修改名称按钮"):
            self.my_click(OrgPageElement.update_org_name_button)
        # 输入新的部门名称,因为是同一个元素可以共用
        with allure.step("输入部门名称：{}".format(new_org_name)):
            self.my_send_keys(ele=OrgPageElement.input_org_name, value=new_org_name)
        # 点击确定,和添加部门按钮的确定元素一致，可以复用
        with allure.step("点击确定"):
            self.my_click(OrgPageElement.define_button)
        # 断言
